package recursion;

public class maze {
    public static void main(String[] args) {
        int map[][] = {{1, 1, 1, 1, 1, 1, 1},
                {1, 0, 0, 0, 0, 0, 1},
                {1, 1, 1, 0, 0, 1, 1},
                {1, 0, 0, 0, 0, 0, 1},
                {1, 0, 0, 0, 0, 0, 1},
                {1, 0, 0, 0, 0, 0, 1},
                {1, 0, 0, 0, 0, 0, 1},
                {1, 1, 1, 1, 1, 1, 1}};

        ableThrough(map, 1, 1);
        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 7; j++){
                System.out.printf("%d\t", map[i][j]);
            }
            System.out.println();
        }

    }

    private static boolean ableThrough(int map[][], int i, int j) {
        if (map[6][5] == 2) {
            return true;
        } else if (map[i][j] == 0){
            map[i][j] = 2;
            if (ableThrough(map, i, j + 1)) {
                return true;
            } else if (ableThrough(map, i + 1, j)) {
                return true;
            } else if (ableThrough(map, i, j - 1)) {
                return true;
            } else if (ableThrough(map, i - 1, j)) {
                return true;
            }
            map[i][j] = 3;
        }
        return false;
    }


}
